package com.powernode.proxy.service;

public class OrderServiceImpl implements OrderService{//目标对象
    /**
     * 项目经理提出新的需求：要统计所有业务接口中的每一个业务的耗时
     * 解决方案一：硬编码，在每一个业务方法写直接统计耗时的程序
     *          缺点一：违反OCP原则
     *          缺点二：代码没有得到复用
     * 解决方案二：编写业务类的子类，让子类继承业务类，对每个业务方法进行重写
     *          缺点一：虽然解决了OCP开闭原则，但是这种方法会导致耦合度很高，因为采用了继承关系，继承关系是一种耦合度非常高的关系，不建议使用
     *          缺点二：代码没有得到复用
     * 解决方案三：代理模式
     */
    /*
    @Override
    public void generate(){
        long begin=System.currentTimeMillis();
        //模拟生产订单的耗时
        try {
            Thread.sleep(1234);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("订单已生成.");
        long end=System.currentTimeMillis();
        System.out.println("耗时"+(end-begin)+"毫秒");
    }

    @Override
    public void modify() {
        long begin=System.currentTimeMillis();
        //模拟修改订单的耗时
        try {
            Thread.sleep(456);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("订单已修改.");
        long end=System.currentTimeMillis();
        System.out.println("耗时"+(end-begin)+"毫秒");
    }

    @Override
    public void detail() {
        long begin=System.currentTimeMillis();
        //模拟查询订单的耗时
        try {
            Thread.sleep(111);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("请看订单详情.");
        long end=System.currentTimeMillis();
        System.out.println("耗时"+(end-begin)+"毫秒");
    }*/
    @Override
    public void generate(){//目标方法
        //模拟生产订单的耗时
        try {
            Thread.sleep(1234);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("订单已生成.");
    }

    @Override
    public void modify() {//目标方法
        //模拟修改订单的耗时
        try {
            Thread.sleep(456);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("订单已修改.");
    }

    @Override
    public void detail() {//目标方法
        //模拟查询订单的耗时
        try {
            Thread.sleep(111);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("请看订单详情.");
    }
}
